#include <head.h>

int main(int argc, char const *argv[])
{
    if (argc != 3)
    {
        printf("格式错误 %s file file", argv[0]);
        return 0;
    }

    // 打开文件
    int fd = open(argv[1], O_CREAT | O_RDWR , 0666);
    int fd_lib = open(argv[2], O_CREAT | O_RDWR | O_APPEND, 0666);
    // 设锁 排他锁
    flock(fd, LOCK_EX);

    char buf[128];         // 零食仓库存放购买商品
    char all_product[128]; // 所有商品
    memset(buf, 0, sizeof(buf));
    memset(all_product, 0, sizeof(all_product));
    for (int i = 0; (read(fd, &all_product[i], 1)) != 0; i++)
    {
    }
    
    // 消费
    lseek(fd , 0 , SEEK_SET);
    for (int i = 0; read(fd, &buf[i], 1) != 0; i++)
    {
        lseek(fd , 0 , SEEK_SET);
        // 购入仓库
        write(fd_lib, &buf[i], 1);
        // 清除已购买商品
        for (size_t j = i+1; j < strlen(all_product); j++)
        {
            write(fd , &all_product[j], 1);
        }
        usleep(500000);
    }

    // 解锁
    flock(fd, LOCK_UN);
    // 关闭文件
    close(fd);
    return 0;
}
